import _config from '@/common/requestjs/config.js' // 导入私有配置
export default function $http(options) {
	// console.log(_config.url , options.url)
	options.url = _config.url + options.url;
	_config.header.Authorization = uni.getStorageSync('loginInfo').token || ''
  return new Promise((resolve, reject) => {
		// 进行url字符串拼接
    // 拦截请求
    _config.complete = (response) => {
		uni.hideLoading()
      //  request請求访问成功
      if (response.statusCode === 200) {
          // 接口请求成功
          resolve(response.data);
      } else {
        // 处理catch 请求，不在本页面之外处理，统一在这里处理
				if(options.handle){
					reject(response)
				}else{
					try {
					  Promise.reject(response).catch(err => {
					    _page_error(response || response.errMsg);
					  });
					} catch (e) {
						console.log(e)
					}
				}
      }
    }
	_config.fail = (err) => {
		uni.showToast({
			title: '网络或服务器出现问题了',
			icon:'none',
			duration:3000
		})
	}
	options.isLoading && uni.showLoading()
    // 开始请求
    uni.request(Object.assign({},_config, options));
  })
}

// request 錯誤
function _page_error(err) {
  switch (err.statusCode) {
	case 400:
		uni.showToast({
			title:err.data.message,
			icon:'none',
			duration:3000
		})
		break;
	case 401:
		if(err.data.code == '404302'){
			uni.showToast({
				icon:'none',
				duration: 2500,
				title:err.data.message,
				success: () => {
					uni.switchTab({
						url:'/pages/home/index'
					})
					uni.removeStorageSync('userInfo')
					uni.removeStorageSync('loginInfo')
				}
			})
		} else  {
			uni.showToast({
				icon:'none',
				title:err.data.message
			})
			// uni.removeStorageSync('loginInfo')
			// uni.removeStorageSync('userInfo')
			// uni.reLaunch({
			// 	url:'/pages/login/login'
			// })
		}
	  break;
    case 404:
      // 错误码404的处理方式
      console.error("没有找到页面")
      break;
    case 405:
      console.error("错误的请求")
      break;
    case 500:
		uni.showToast({
			icon:'none',
			title:err.data.message
		})
      break;
  }
}